/**
 * @file    elog_flash_cfg.h
 * @brief   EasyLogger Flash插件配置头文件
 * @details 本文件包含了EasyLogger Flash存储插件的所有配置选项，包括：
 *          - Flash存储缓冲区大小配置
 *          - 缓冲模式和直写模式选择
 *          - Flash存储相关参数配置
 *          - 插件功能开关配置
 */

#ifndef _ELOG_FLASH_CFG_H_
#define _ELOG_FLASH_CFG_H_

/* ------------------------------------- 基础功能配置 ---------------------------------------------- */
#define ELOG_FLASH_ENABLE                                       /* 启用Flash插件功能 */
#define ELOG_FLASH_USING_BUF_MODE                               /* 启用Flash日志缓冲模式 */

/* Flash日志缓冲区大小配置 - 必须配置 */
#define ELOG_FLASH_BUF_SIZE              (4 * 1024)             /* 4KB缓冲区，必须为4的倍数(字对齐) */
                                                                /* 建议范围: 1KB ~ 16KB，根据RAM大小调整 */
                                                                /* 缓冲区越大，Flash写入次数越少，寿命越长 */

/* ------------------------------------- 存储地址配置 ---------------------------------------------- */
#define ELOG_FLASH_START_ADDR            0x08080000             /* Flash存储起始地址 */
#define ELOG_FLASH_STORAGE_SIZE          (128 * 1024)           /* Flash存储区域大小 */
#define ELOG_FLASH_SECTOR_SIZE           4096                   /* Flash扇区大小 */

/* ------------------------------------ EasyFlash配置 ---------------------------------------------- */
#define ELOG_FLASH_USING_EASYFLASH                              /* 启用EasyFlash库支持 */
#define ELOG_FLASH_EF_LOG_PART_NAME      "ef_log"               /* EasyFlash日志分区名称 */

/* ------------------------------------ 性能优化配置 ------------------------------------------------ */
#define ELOG_FLASH_WORD_ALIGN_SIZE       4                      /* Flash存储字对齐大小 */
#define ELOG_FLASH_WRITE_TIMEOUT_MS      1000                   /* Flash写入超时时间（毫秒） */
#define ELOG_FLASH_ERASE_TIMEOUT_MS      5000                   /* Flash擦除超时时间（毫秒） */

/* ------------------------------------ 调试功能配置 ------------------------------------------------ */
//#define ELOG_FLASH_DEBUG_ENABLE                               /* 启用Flash插件调试信息 */
//#define ELOG_FLASH_STATISTICS_ENABLE                          /* 启用Flash操作统计信息 */

/* ------------------------------------ 使用示例和说明 ---------------------------------------------- */
/*
 * 配置示例1 - 基本配置 (适用于大多数STM32应用):
 * #define ELOG_FLASH_BUF_SIZE          (2 * 1024)      // 2KB缓冲区
 * #define ELOG_FLASH_START_ADDR        0x08080000      // Flash起始地址
 * #define ELOG_FLASH_STORAGE_SIZE      (64 * 1024)     // 64KB存储空间
 * 
 * 配置示例2 - 大容量RAM配置:
 * #define ELOG_FLASH_BUF_SIZE          (8 * 1024)      // 8KB缓冲区
 * #define ELOG_FLASH_START_ADDR        0x08100000      // Flash起始地址
 * #define ELOG_FLASH_STORAGE_SIZE      (256 * 1024)    // 256KB存储空间
 * 
 * 配置示例3 - 小容量RAM配置:
 * #define ELOG_FLASH_BUF_SIZE          (1 * 1024)      // 1KB缓冲区
 * #define ELOG_FLASH_START_ADDR        0x08060000      // Flash起始地址
 * #define ELOG_FLASH_STORAGE_SIZE      (32 * 1024)     // 32KB存储空间
 * 
 * 重要注意事项:
 * 1. ELOG_FLASH_BUF_SIZE 必须为4的倍数(字对齐要求)
 * 2. Flash存储地址不能与程序代码区域冲突
 * 3. 确保EasyFlash库已正确初始化
 * 4. 建议在系统初始化时调用 ef_env_init() 和 ef_log_init()
 * 5. 缓冲区大小影响性能：大缓冲区减少Flash写入次数但占用更多RAM
 * 
 * EasyFlash库集成步骤:
 * 1. 下载EasyFlash库: https://github.com/armink/EasyFlash
 * 2. 将EasyFlash源码添加到项目中
 * 3. 配置ef_cfg.h文件中的Flash参数
 * 4. 在main函数中调用easyflash_init()进行初始化
 */

#endif /* _ELOG_FLASH_CFG_H_ */
